<?php
	namespace Admin\Controller;
	/**
	 * 后台分类控制器类
	 */
	class CateController extends BaseController {
		/**
		 * 后台分类列表展示方法
		 */
		public function showList() {
			// 获取数据	
			// 创建模型对象
			$model = D('Cate');
			// 获取数据
			$data = $model->getCateData();	
			// 分配变量
			$this->assign('data', $data);	
			// 展示分类列表模板
			$this->display();
		}
		/**
		 * 后台分类添加方法
		 */
		public function add() {
			// 获取数据库已存在的分类
			$model = D('Cate');
			$data = $model->getCate();
			// 分配变量
			$this->assign('data', $data);
			// 展示模板
			$this->display();
		}
		/**
		 * 处理添加分类方法
		 */
		public function dealAdd() {
			// 接收数据
			$post = I('post.');
			// 判断是否为空
			if(isEmpty($post)) {
				// 有为空的值
				$this->error('填写数据中不能为空');
			}
			// 创建模型
			$model = D('Cate');
			// 调用模型添加方法
			$result = $model->addData($post);
			if($result) {
				// 添加成功
				$this->success('添加成功',U('add'));
			}else {
				// 添加失败
				$this->error('添加发生未知错误');
			}
		}
		/**
		 * 修改分类方法
		 */ 
		public function edit() {
			// 接受id参数
			$id = I('get.id');
			// 创建模型对象
			$model = D('Cate');
			// 执行根据id获取数据
			$result = $model->getDataById($id);
			// 获取所有分类名称和id
			$data = $model->getCate();
			// 分配变量
			$this->assign('result', $result);
			$this->assign('data', $data);
			// 展示模板
			$this->display();
		}
		/**
		 * 处理修改分类方法
		 */ 
		public function dealEdit() {
			// 接收数据
			$post = I('post.');
			// 创建模型对象
			$model = D('Cate');
			// 调用修改方法
			$result = $model->modify($post);
			if($result) {
				// 修改成功
				$this->success('修改成功',U('showList'));
			}else {
				// 修改失败
				$this->error('修改发生未知错误');
			}
		}
		/**
		 * 逻辑删除分类方法
		 */ 
		public function logicDelete() {
			// 获取id
			$id = I('get.id');
			// 创建模型对象
			$model = D('Cate');
			// 根据id获取该分类下是否有文章
			$haveArticle = $model->haveArticle($id)['cate_articlenum'];
			if($haveArticle) {
				// 有文章,不能删除				
				$this->error('该分类下有文章,你不能这么随便删除');
			}
			// 没有文章 , 执行逻辑删除方法
			$result = $model->logicDelete($id);
			if($result) {
				// 删除成功
				$this->success('删除成功,你可以去回收站找回',U('showList'));
			}else {
				// 删除失败
				$this->error('删除发生未知错误');
			}
		} 
		/**
		 * 批量逻辑删除分类方法
		 */
		public function logicAllDelete() {
			// 接收数据
			$post = I('post.id');
			// 将数组转成字符串
			$ids = implode(',', $post);
			// 创建模型
			$model = D('Cate');
			// 调用逻辑批量删除
			$result = $model->logicAllDelete($ids);
			if($result)  {
				// 删除成功
				$this->success('删除成功,你可以去回收站找回',U('showList'));
			}else {
				// 删除失败
				$this->error('删除发生未知错误');
			}
		}
		/**
		 * 回收站页面显示
		 */
		public function recycle() {
			// 获取数据
			// 创建模型对象
			$model = D('Cate');
			// 获取已经逻辑删除数据
			$data = $model->getLogicCate();
			// 分配变量
			$this->assign('data', $data);
			// 展示模板
			$this->display();
		}
		/**
		 * 还原单个分类方法
		 */ 
		public function restore() {
			// 获取id
			$id = I('get.id');
			// 创建模型
			$model = D('Cate');
			// 还原
			$result = $model->restory($id);
			if($result)  {
				// 还原成功
				$this->success('还原成功');
			}else {
				// 还原失败
				$this->error('还原发生未知错误');
			}
		}
		/**
		 * 彻底删除分类
		 */
		public function delete() {
			// 获取id
			$id = I('get.id');
			// 创建模型
			$model = D('Cate');
			// 删除
			$result = $model->deleteOne($id);
			if($result)  {
				// 删除成功
				$this->success('删除成功');
			}else {
				// 删除失败
				$this->error('删除发生未知错误');
			}
		}
		/**
		 * 批量操作分发器
		 */ 
		public function AllHandler() {
			if(I('post.AllDelete') != null) {
				// 批量删除操作
				$this->allDelete();
			}else {
				// 批量还原操作
				$this->allRestore();
			}
		}
		/**
		 * 批量彻底删除
		 */
		private function allDelete() {
			// 接收数据
			$post = I('post.id');
			// 将数组转成字符串
			$ids = implode(',', $post);
			// 创建模型
			$model = D('Cate');
			// 调用逻辑批量删除
			$result = $model->AllDeleteData($ids);
			if($result)  {
				// 删除成功
				$this->success('删除成功');
			}else {
				// 删除失败
				$this->error('删除发生未知错误');
			}
		}
		/**
		 * 批量还原
		 */
		private function allRestore() {
			// 接收数据
			$post = I('post.id');
			// 将数组转成字符串
			$ids = implode(',', $post);
			// 创建模型
			$model = D('Cate');
			// 调用逻辑批量删除
			$result = $model->AllRestore($ids);
			if($result)  {
				// 还原成功
				$this->success('还原成功');
			}else {
				// 还原失败
				$this->error('还原发生未知错误');
			}
		}
	}
